package TankGame;

// StartPanel类主要用于创建游戏的开始界面
// 包括显示游戏标题、开始游戏按钮和退出游戏按钮等。
// 通过使用Swing组件来构建界面，为用户提供直观的操作入口，使用了布局管理器来对组件进行合理布局，还通过事件监听器来响应用户的操作。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

// 开始面板
class StartPanel extends JPanel {
    private TankGame tankGame;

    public StartPanel(TankGame tankGame) {
        this.tankGame = tankGame;
        // 设置背景为深灰色
        setBackground(Color.DARK_GRAY);
        // 使用GridBagLayout布局管理器，以便更灵活地布局组件
        setLayout(new GridBagLayout());

        // 创建并设置标题标签
        JLabel titleLabel = new JLabel("坦克大战");
        // 设置字体为楷书，加粗，字号为54
        titleLabel.setFont(new Font("楷书", Font.BOLD, 54));
        titleLabel.setForeground(Color.WHITE);
        // 使标题在水平方向居中显示
        titleLabel.setHorizontalAlignment(SwingConstants.CENTER);

        // 创建开始游戏按钮
        JButton startButton = new JButton("开始游戏");
        // 设置按钮字体为仿宋体，加粗，字号为24
        startButton.setFont(new Font("仿宋体", Font.BOLD, 24));
        startButton.setForeground(Color.WHITE);
        startButton.setBackground(Color.GRAY);
        // 为开始游戏按钮添加事件监听器，点击时启动游戏
        startButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                tankGame.startGame();
            }
        });

        // 创建退出游戏按钮
        JButton exitButton = new JButton("退出游戏");
        exitButton.setFont(new Font("仿宋体", Font.BOLD, 24));
        exitButton.setForeground(Color.WHITE);
        exitButton.setBackground(Color.GRAY);
        // 为退出游戏按钮添加事件监听器，点击时退出程序
        exitButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });

        GridBagConstraints gbc = new GridBagConstraints();

        // 添加标题到面板
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.gridwidth = 1;
        // 组件在水平方向填充整个可用空间
        gbc.fill = GridBagConstraints.HORIZONTAL;
        // 组件在水平和垂直方向都居中对齐
        gbc.anchor = GridBagConstraints.CENTER;
        // 设置组件的外部间距，上方间距为20，下方间距为80，左右间距为0
        gbc.insets = new Insets(20, 0, 80, 0);
        add(titleLabel, gbc);

        // 添加开始游戏按钮到面板
        gbc.gridy = 1;
        // 去掉顶部间距
        gbc.insets = new Insets(0, 0, 0, 0);
        add(startButton, gbc);

        // 添加退出游戏按钮到面板
        gbc.gridy = 2;
        // 增加顶部间距为30
        gbc.insets = new Insets(30, 0, 0, 0);
        add(exitButton, gbc);
    }
}
